import { CoolConfig } from '@cool-midway/core';
import { MidwayConfig } from '@midwayjs/core';
import { CoolCacheStore } from '@cool-midway/core';
import { readFileSync } from 'fs';

// redis缓存
// import { redisStore } from 'cache-manager-ioredis-yet';

export default {
  // use for cookie sign key, should change to your own and keep security
  keys: 'jiaxisheji',
  koa: {
    port: 8001,
  },
  // 模板渲染
  view: {
    mapping: {
      '.html': 'ejs',
    },
  },
  // 静态文件配置
  staticFile: {
    buffer: true,
  },
  // 文件上传
  upload: {
    fileSize: '200mb',
    whitelist: null,
  },
  // 获取微信支付的配置，静态的配置在实例化使用后 publicKey 和 privateKey 会莫名其妙被删掉，导致后续使用报错，故改为函数执行获取。
  getWxPayConfig: () => {
    return {
      key: 's9t84kz0t0j9k73DGByJ789LUH7u8Hyb',
      appid: 'wxb5e14e0bc1bac574',
      mchid: '1530426621',
      notify_url:
        'https://jiaxi.yunmic.com/api/admin/bizOrder/list/wxPayNotify',
      publicKey: readFileSync('public/wxpay/apiclient_cert.pem'),
      privateKey: readFileSync('public/wxpay/apiclient_key.pem'),
    };
  },
  // 获取阿里云短信配置
  getALiYunSMS: () => {
    return {
      signName: '佳西设计新订单提醒',
      template: 'SMS_467510535',
      accessKeyId: 'LTAI5t71wLQtfie3sZTTKxX2', // 这俩必须在插件里写入
      accessKeySecret: 'BCsCMGUd9ZP2wOyUDQTDIElKR6xz1Z', // 这俩必须在插件里写入
    };
  },
  // 缓存 可切换成其他缓存如：redis http://www.midwayjs.org/docs/extensions/caching
  cacheManager: {
    clients: {
      default: {
        store: CoolCacheStore,
        options: {
          path: 'cache',
          ttl: 0,
        },
      },
    },
  },
  // cacheManager: {
  //   clients: {
  //     default: {
  //       store: redisStore,
  //       options: {
  //         port: 6379,
  //         host: '127.0.0.1',
  //         password: '',
  //         ttl: 0,
  //         db: 0,
  //       },
  //     },
  //   },
  // },
  cool: {
    // 已经插件化，本地文件上传查看 plugin/config.ts，其他云存储查看对应插件的使用
    file: {},
    // crud配置
    crud: {
      // 插入模式，save不会校验字段(允许传入不存在的字段)，insert会校验字段
      upsert: 'save',
      // 软删除
      softDelete: true,
    },
  } as CoolConfig,
} as MidwayConfig;
